import App from './App'
import store from './store'

// #ifndef VUE3
import Vue from 'vue'
Vue.config.productionTip = false
App.mpType = 'app'

// 按需导入 $http 对象
import { $http } from '@escook/request-miniprogram'
// 在 uni-app 项目中，可以把 $http 挂载到 uni 顶级对象之上，方便全局调用
uni.$http = $http
// 设置基地址
// $http.baseUrl = 'https://www.uinav.com'
$http.baseUrl = 'https://api-hmugo-web.itheima.net/api/public/v1/'
// 注册请求拦截
$http.beforeRequest = function(options) {
	// 显示加载提示框
	uni.showLoading({
		title: '数据加载中...'
	})
	if (options.url.indexOf('my/orders') != -1) {
		options.header.Authorization = store.state.m_user.token
	}
}

// 注册相应拦截
$http.afterRequest = function() {
	// 关闭加载提示框
	uni.hideLoading()
}

// 封装弹出提示框的全局方法
uni.$showToast = function(title = '加载数据失败', duration = 1500) {
	return uni.showToast({
		title,
		duration,
		icon: 'none'
	})
}

try {
  function isPromise(obj) {
    return (
      !!obj &&
      (typeof obj === "object" || typeof obj === "function") &&
      typeof obj.then === "function"
    );
  }

  // 统一 vue2 API Promise 化返回格式与 vue3 保持一致
  uni.addInterceptor({
    returnValue(res) {
      if (!isPromise(res)) {
        return res;
      }
      return new Promise((resolve, reject) => {
        res.then((res) => {
          if (res[0]) {
            reject(res[0]);
          } else {
            resolve(res[1]);
          }
        });
      });
    },
  });
} catch (error) { }

const app = new Vue({
	store,
  ...App
})
app.$mount()
// #endif

// #ifdef VUE3
// import { createSSRApp } from 'vue'
// export function createApp() {
//   const app = createSSRApp(App)
//   return {
//     app
//   }
// }
// #endif